/**
 * 在 Vue Router 初始化之前，手动解析 URL 的 hash 部分，
 * 检查是否存在 SSO 参数。如果存在，则将其存入 sessionStorage。
 * 这个函数必须在 main.js 中、在 createApp() 之后、在 router.isReady() 或 app.use(router) 之前调用。
 */
export function preprocessSsoParams() {
    // 获取 URL 的 hash 部分，例如 "#/login?jmgh=...&jmsj=..."
    const hash = window.location.hash;
    if (!hash.includes('?')) {
        return; // hash 中没有查询参数，直接返回
    }

    try {
        // 从 hash 中提取查询字符串部分
        const queryString = hash.substring(hash.indexOf('?') + 1);

        // 使用 URLSearchParams 来安全、健壮地解析查询字符串
        const params = new URLSearchParams(queryString);

        const jmgh = params.get('jmgh');
        const jmsj = params.get('jmsj');

        if (jmgh && jmsj) {
            console.log('SSO Preprocessor: Found SSO params in URL hash.', { jmgh, jmsj });

            // 安全存入 sessionStorage
            sessionStorage.setItem('sso_jmgh', jmgh);
            sessionStorage.setItem('sso_jmsj', jmsj);

            // ★★★ 关键步骤：从 URL 中移除 SSO 参数 ★★★
            // 这可以防止参数在后续的路由重定向中造成混乱，并保持地址栏干净。
            // 我们只移除 SSO 相关的参数，保留其他可能的参数如 redirect。
            params.delete('jmgh');
            params.delete('jmsj');

            const path = hash.substring(1, hash.indexOf('?'));
            const newQueryString = params.toString();

            // 构建新的 hash
            const newHash = newQueryString ? `${path}?${newQueryString}` : path;

            // 使用 history.replaceState 来无刷新地更新 URL
            // 这比直接修改 window.location.hash 要好，因为它不会在浏览器历史中创建新条目。
            window.history.replaceState(null, '', `/#${newHash}`);
        }
    } catch (error) {
        console.error("Error during SSO preprocessing:", error);
    }
}